#还是先导入模块

# import my_model as m
#
# m.fun(1,2)



#如果导入功能同名，使用最后导入的那个名字的功能
#from my_model  import fun
#from my_model1  import fun#使用这个功能。覆盖了前一个


#我们在import的时候，实际就已经执行了一遍导入的功能
import my_model#hello world  -2
#已经执行fun（）的功能


#__main__这个函数。当我在执行自定义模块这个文件时，
# 不想输出my_model这个模块的内容，就使用这个变量
# import my_model #这个时候就不会输出my_model的函数调用的内容，被if判断拦截了





# __all__的使用，控制使用的功能。列表的形式控制__all__=['fun2']，只能使用fun2（）
import my_model2 #导入全部的功能


#from my_model2 from fun1 这个指定的调用是可以的

# from my_model2 import *# 通过*导入全部的功能

#注意all这个只作用在全部上面，你要是单独调用，完全可以；
from my_model2 import fun1 #可以使用
try:
    # fun2(1, 4)  # 只能使用fun2()
    fun1(1, 4)  # NameError: name 'fun1' is not defined. Did you mean: 'fun2'?
except Exception as e:
    print("有函数不能使用")





